package com.niiwoo.civet.trade.dto.response.myloan;

import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 借款标的详情页
 * 
 * @author liaojunjun
 *
 */
@Getter
@Setter
public class QueryProjectBorrowDetailReponseDTO implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4441758354398873407L;

	/**
	 * 标的状态(1:审核中;2:已流标;3:借款被退回;4:审核通过待确认;5:投资中;6:还款中;7:还款逾期;8:严重逾期;9:已结束;10:
	 * 严重逾期已结算)
	 */
	private Byte disStatus;

	/**
	 * 子状态，（100审核中-初始，101审核中-借款退回，102自动审核-通过，103自动审核-人工审核，104人工审核-通过，105审核通过待确认（融360有）113您的借款已审核通过，等待发布中，200筹款中-初始，201筹款中-放款中,300还款中-正常还款中，301还款中-逾期还款中，302还款中-坏账还款中，400已结清-正常，401已结清-提前结清，402已结清-坏账结清，500流标-自动审核不通过，501流标-人工审核不通过，502流标-借款退回超时未确认，503流标-借款人手动取消，504流标-投资超时，505流标-后台管理人员手工流标）
	 */
	private Integer subStatus;

	/**
	 * 借款用途审核状态(审核状态（1未审核，2通过，3不通过）)
	 */
	private Byte loanVoucherAuditStatus;

	/**
	 * ID
	 */
	private Long projectId;

	/**
	 * 标的标题
	 */
	private String projectTitle;

	/**
	 * 产品类型默认1:个人极速借 2:机构极速借 3:你我云贷 4:卡易借 8:小易贷 9:社保贷 10:信用卡贷)
	 */
	private Byte type;

	/**
	 * 创建时间
	 */
	private String createTime;

	/**
	 * 审核中详情
	 */
	private DetailChecking detailChecking;

	/**
	 * 已流标详情
	 */
	private DetailMiscarry detailMiscarry;

	/**
	 * 借款被退回详情
	 */
	private DetailBack detailBack;

	/**
	 * 借款被退回详情-新产品（小易贷，社保贷，信用卡贷）
	 */
	private NewDetailBack newDetailBack;

	/**
	 * 审核通过待确认详情
	 */
	private DetailToBeConfirmed detailToBeConfirmed;

	/**
	 * 投资中详情
	 */
	private DetailCollecting detailCollecting;

	/**
	 * 还款中详情
	 */
	private DetailRepaying detailRepaying;

	/**
	 * 还款逾期详情
	 */
	private DetailOverdueRepaying detailOverdueRepaying;

	/**
	 * 严重逾期详情
	 */
	private DetailBadDebt detailBadDebt;

	/**
	 * 已结束详情
	 */
	private DetailFinish detailFinish;

	/**
	 * 严重逾期已结算详情
	 */
	private DetailBadDebtFinish detailBadDebtFinish;

	/**
	 * 是否显示提额认证
	 */
	private Boolean showIncreaseLoanAmount;

	/**
	 * 是否提额标的标识：0、否；1、是
	 */
	private Byte teProjectFlag;


	/**
	 * 审核中详情
	 */
	@Getter
	@Setter
	public static class DetailChecking implements Serializable {

		/**
		 * 
		 */
		private static final long serialVersionUID = -5882983111116583468L;

	}

	/**
	 * 已流标详情
	 */
	@Getter
	@Setter
	public static class DetailMiscarry implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = 2122282397635492112L;

		/**
		 * 流标时间
		 */
		private String miscarryTime;

		/**
		 * 流标描述
		 */
		private String miscarryDisplay;

		/**
		 * 是否显示第三方渠道,只有借款人自己取消的标的不显示
		 */
		private boolean showThirdChannel;
	}

	/**
	 * 借款被退回详情
	 */
	@Getter
	@Setter
	public static class DetailBack implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = -8320788922606110419L;
		/**
		 * 退回原因
		 */
		private List<String> reasonList;
		/**
		 * 用户处理方案 1修改授信资料、2修改借款资料
		 */
		private Byte processScheme;

		/**
		 通知内容"
		 */
		private String noticeContent;
	}

	/**
	 * 借款被退回详情
	 */
	@Getter
	@Setter
	public static class NewDetailBack implements Serializable {
		private static final long serialVersionUID = 4716043532770766624L;

		private Byte type; //产品类型(默认1:个人极速借 2:机构极速借 3:你我云贷 4:卡易借 8:小易贷 9:社保贷 10:信用卡贷)
		private Integer loanTerm;   //借款期限
		private BigDecimal handAmount;        //到手金额
		private String loanUsage;   //借款用途
		private List<String> reasonList; //退回原因
		private String noticeContent; //通知内容
	}

	/**
	 * 审核通过待确认详情
	 */
	@Getter
	@Setter
	public static class DetailToBeConfirmed implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = 8757283900756543505L;

		/**
		 * 借款标题-借款用途
		 */
		private String title;

		/**
		 * 合同金额
		 */
		private BigDecimal contractAmount;

		/**
		 * 到手金额
		 */
		private BigDecimal handAmount;

		/**
		 * 前期服务费
		 */
		private BigDecimal prophaseServiceFee;

		/**
		 * 平台服务费
		 */
		private BigDecimal platformServiceFee;

		/**
		 * 担保服务费
		 */
		private BigDecimal guaranteeFee;

		/**
		 * 借款利率
		 */
		private BigDecimal borrowRate;

		/**
		 * 期数
		 */
		private Integer deadline;

		/**
		 * 期数单位
		 */
		private Byte deadlineUnit;

		/**
		 * 还款方式
		 */
		private Byte repaymentType;

		/**
		 * 投放渠道CODE(app为默认渠道   kaolalicai考拉理财  tuandai团贷)
		 */
		private String channelCode;

		/**
		 * 标的来源（1、APP，2、H5活动，3、H5极速借, 4、融360）
		 */
		private Byte fromSource;

		/**
		 * 类型(默认1:个人极速借 2:机构极速借 3:你我云贷)
		 */
		private Byte bizType;

		/**
		 * 每月还款
		 */
		private BigDecimal monthRefundAmount;

		/**
		 * 还款总额
		 */
		private BigDecimal refundTotalAmount;

		/**
		 * 平台管理费
		 */
		private BigDecimal managementFee;

		/**
		 * 利息
		 */
		private BigDecimal interest;

		/**
		 * 确认截止时间
		 */
		private String confirmEndTime;

		/**
		 * 申请是否有调整
		 */
		private boolean applyIsChange;

		/**
		 * 调整前申请金额
		 */
		private BigDecimal applyAmount;

		/**
		 * 调整前申请期限
		 */
		private String applyDeadline;

		/**
		 通知内容"
		 */
		private String noticeContent;

		/**
		 * 借款利率
		 */
		private BigDecimal borrowInterestRate;

		/**
		 * 担保服务费率
		 */
		private BigDecimal guaranteeServiceFeeRate;

		/**
		 * 平台管理费率
		 */
		private BigDecimal platformManageFeeRate;

		/**
		 * 逾期罚息
		 */
		private BigDecimal overDueFee;
	}

	/**
	 * 投资中详情
	 */
	@Getter
	@Setter
	static public class DetailCollecting implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = -4333330872528028841L;

		/**
		 * 发布时间
		 */
		private String publishTime;

		/**
		 * 已投资金额
		 */
		private BigDecimal investAmount;

		/**
		 * 借款金额
		 */
		private BigDecimal contractAmount;

		/**
		 * 投资进度
		 */
		private BigDecimal investRateOfProgress;

		/**
		 * 投标剩余时间
		 */
		private String investEndTime;
	}

	/**
	 * 还款中详情
	 */
	@Getter
	@Setter
	public static class DetailRepaying implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = -3483020291704324985L;

		/**
		 * 满标时间
		 */
		private String fullSuccessTime;

		/**
		 * 合同金额
		 */
		private BigDecimal contractAmount;

		/**
		 * 借款利率
		 */
		private BigDecimal borrowRate;

		/**
		 * 期数
		 */
		private Integer deadline;

		/**
		 * 期数单位
		 */
		private Byte deadlineUnit;

		/**
		 * 发布时间
		 */
		private String publishTime;

		/**
		 * 银行卡后几位
		 */
		private String bankAccountNoendNum;

		/**
		 * 投放渠道CODE
		 */
		private String channelCode;

		/**
		 * 标的来源（1、APP，2、H5活动，3、H5极速借, 4、融360）
		 */
		private Byte fromSource;

		/**
		 * 类型(默认1:个人极速借 2:机构极速借 3:你我云贷)
		 */
		private Byte bizType;

		/**
		 * 当期还款状态（1未还款，2已正常还款，3已逾期还款）
		 */
		private Byte currentRefundStatus;

		/**
		 * 当期应还总金额
		 */
		private BigDecimal currentPeriodRefundTotalAmount;

		/**
		 * 当期期数
		 */
		private Integer currentPeriod;

		/**
		 * 总期数
		 */
		private Integer totalPeriod;

		/**
		 * 当期应还本金
		 */
		private BigDecimal currentPeriodCapital;

		/**
		 * 当期应还利息
		 */
		private BigDecimal currentPeriodInterest;

		/**
		 * 当期应还平台管理费
		 */
		private BigDecimal currentPeriodManagementFee;
		
		/**
		 * 当期应还担保服务费
		 */
		private BigDecimal currentPeriodGuaranteeFee;

		/**
		 * 待还总金额
		 */
		private BigDecimal pendingRepaymentTotalAmount;

		/**
		 * 待还本金总额
		 */
		private BigDecimal pendingRepaymentCapitalTotal;

		/**
		 * 待还应还利息总额
		 */
		private BigDecimal pendingRepaymentInterestTotal;

		/**
		 * 待还平台管理费总额
		 */
		private BigDecimal pendingRepaymentManagementFeeTotal;
		
		/**
		 * 待还担保服务费总额
		 */
		private BigDecimal pendingRepaymentGuaranteeFeeTotal;
		
		/**
		 * 当期还款日
		 */
		private Date currentPeriodRefundDate;
		
		/**
		 * 当天是否还款日
		 */
		private Boolean repayDateIsToday; 
		
		/**
		 * 考拉还款状态
		 */
		private Byte kaolaRepayStatus;
	}

	/**
	 * 还款逾期详情
	 */
	@Getter
	@Setter
	public static class DetailOverdueRepaying extends DetailRepaying implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = -5669473930833447617L;

		/**
		 * 逾期天数
		 */
		private Integer overdueDay;

		/**
		 * 罚息日利率
		 */
		private BigDecimal penaltyRate;

		/**
		 * 逾期期数
		 */
		private Integer overduePeriod;

		/**
		 * 罚息
		 */
		private BigDecimal penaltyFee;
	}

	/**
	 * 严重逾期详情
	 */
	@Getter
	@Setter
	public static class DetailBadDebt extends DetailOverdueRepaying implements Serializable {
		/**
		 * 
		 */
		private static final long serialVersionUID = 8688530882346643455L;
		/**
		 * 终止日期
		 */
		private String endTime;
	}

	/**
	 * 已结束详情
	 */
	@Getter
	@Setter
	public static class DetailFinish implements Serializable {

		/**
		 * 
		 */
		private static final long serialVersionUID = -7727550387125715897L;

	}

	/**
	 * 严重逾期已结算详情
	 */
	@Getter
	@Setter
	public static class DetailBadDebtFinish implements Serializable {

		/**
		 * 
		 */
		private static final long serialVersionUID = 7565571505951013573L;

	}
}
